The present invention relates in general to automated testing of software applications and in particular to integration testing of applications based on a microservices architecture.
A microservices architecture distributes functionality of an application across a set of interconnected standalone processes called microservices. Each microservice may operate as a black box, providing distinct functionality that is exposed to other microservices by a strictly defined interface.
This allows each microservice to be tested in isolation before performing testing the entire application as an integrated set of microservices. Isolation testing a microservice is relatively straightforward, using dummy “mock” processes to submit input to the microservice through its formal interface and then determining whether the microservice responds through the interface with expected output.
Integration testing involves comprehensive end-to-end testing of the entire application, including testing of the application's interactions with external systems. In some cases, integration testing may comprise testing each subsystem of the application, where each subsystem consists of a subset of the application's microservices. Testing a subsystem in this way requires creation of functioning “mock” microservices that exchange data with the subsystem.
Tools exist for creating mock processes to be used in isolation testing of a single microservice. However, because testing a subsystem can be so much more complex than testing an isolated microservice or component, there is no easy way to generate an integrated set of microservices necessary to perform integration testing on a subsystem or application that itself comprises many microservices.